package com.cloud.cmt.usermanage.service;

import com.angela.cloud.common.base.ResultMessage;
import com.cloud.cmt.usermanage.constant.EnterpriseConstants;
import com.cloud.cmt.usermanage.dao.EnterpriseUserDAO;
import com.cloud.cmt.usermanage.entity.vo.AuditManagementVO;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 浙江卓锐科技股份有限公司 版权所有 © Copyright 2017<br>
 * 说明: <br>
 * 项目名称: cloud-maintenance <br>
 * 创建日期: 2017年10月29日 16:07 <br>
 * 作者: <a href="6492178@gmail.com">汪萌萌</a>
 */
public interface UserManagementService {
    /**
     * Gets audit managements by account status.
     * 根据账户状态获取审核列表
     *
     * @param pageable      the pageable
     * @param accountStatus the account status
     * @param conditions    the conditions
     * @return the audit managements by account status
     */
    ResultMessage<List<AuditManagementVO>> getAuditManagementsByAccountStatus(Pageable pageable, int[] accountStatus, String conditions);

    /**
     * Gets enterprise detail by id.
     * 根据id获取企业详情
     *
     * @param id the id
     * @return the enterprise detail by id
     */
    ResultMessage getEnterpriseDetailById(Long id);

    /**
     * Audit pass by id result message.
     * 审核通过
     *
     * @param id the id
     * @return the result message
     */
    ResultMessage auditPassById(Long id);

    /**
     * Audit not pass by id result message.
     * 审核不通过
     *
     * @param id the id
     * @return the result message
     */
    ResultMessage auditNotPassById(Long id);

    /**
     * Add black list by id result message.
     * 加入黑名单
     *
     * @param id the id
     * @return the result message
     */
    ResultMessage addBlackListById(Long id);

    /**
     * Remove black list by id result message.
     * 移除黑名单
     *
     * @param id the id
     * @return the result message
     */
    ResultMessage removeBlackListById(Long id);

    ResultMessage<EnterpriseUserDAO> checkAccountStatusIsAllowToChange(Long enterpriseId, EnterpriseConstants statusToChange);
}
